iT邦幫忙

0

[資料結構][Python]稀疏矩陣(一)-三元序對轉換

  • 分享至 

  • xImage
  •  

給定三元序對

sparse1 = [
             [5, 6, 4], 
             [1, 2, 3], 
             [2, 1, 6],
             [3, 1, 9], 
             [4, 5, 12]
          ]

轉換成一般矩陣

def restore(sparse): #三元序對轉為稀疏矩陣
    row = sparse[0][0]
    column = sparse[0][1]
    array = [[0] *column  for i in range(row)] #先建立空陣列,每一列有 column個0*共有row列
    k = 1 #從第一列開始 而非第0列開始

    while k<=sparse[0][2]:
        array[sparse[k][0]][sparse[k][1]]=sparse[k][2]
        k+=1

    return array

將一般矩陣轉換成三元序對

def store(array): #將稀疏矩陣儲存三元序對

    row=len(array) #計算三元陣列的total row
    column=len(array[0]) #計算三元陣列的total column
    s=[] #建立空的陣列
    count=0 #計算所有非0值

    for i in range(row):        #計算所有非0值
        for j in range(column):
            if array[i][j]!=0:
                count+=1
    
    s.append([row,column,count]) #儲存總數

    for i in range(row):            #將非0值儲存成三元序對
        for j in range(column):
            if array[i][j] !=0:
                s.append([i,j,array[i][j]])

    return s

看結果

array = restore(sparse1)
print("給定三元序對,還原矩陣:",array)
store(array)
three=store(array)
print("給定稀疏矩陣,轉成三元序對:",three)#依照row major 排序

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言